var gulp = require('gulp');          // gulp工具
var concat = require('gulp-concat'); // 文件合并
var jshint = require('gulp-jshint'); // 语法检查
var ugfily = require('gulp-uglify'); // js文件压缩
var rename = require('gulp-rename'); // 重命名文件
var compass = require('gulp-compass');// compass-sass 编译
var clean = require('gulp-clean-css'); // 压缩css文件

// 合并压缩js
gulp.task('script', function () {
    console.log('合并压缩JavaScript');

    gulp.src('./src/js/*.js')      // 源文件
        .pipe(jshint())             // 语法检测
        .pipe(jshint.reporter('default'))  // 语法检测报告输出
        .pipe(concat('app.js'))     // 合并成app.js
        .pipe(gulp.dest('./app'))    // 保存到./app
        .pipe(rename('app.min.js')) // 重命名为app.min.js
        .pipe(ugfily())             // 压缩
        .pipe(gulp.dest('./app'));   // 保存到./app
});

// compss 编译压缩
gulp.task('compass', function () {
    console.log("编译压缩 css");

    gulp.src('./src/sass/*.scss') // 源文件
        .pipe(compass({
            config_file: './config.rb', //compass配置文件 compass init 生成
            css: './src/css',  // css 输出目录
            sass: './src/sass' // sass 源目录
        })) // 配置compass
        .pipe(gulp.dest('./src/css/')) // 保存到./src/css
        .pipe(concat('style.css')) // 合并为style.css
        .pipe(gulp.dest('./css')) // 保存到./css
        .pipe(rename('style.min.css')) // 重命名为 style.min.css
        .pipe(clean()) // 压缩css
        //.pipe(clean({debug: true}, function (details) {
        //    console.log(details.name + ': ' + details.stats.originalSize);
        //    console.log(details.name + ': ' + details.stats.minifiedSize);
        //})) // 自定义输出log格式
        .pipe(gulp.dest('./css')); // 保存到./css
});

// 监听js文件
gulp.task('watch', function () {
    gulp.run('script', 'compass');

    var js_count = 1;
    var css_count = 1;

    console.log('开始监听 js');
    gulp.watch('./src/js/*.js', function () {
        console.log('\n本次监听:js第[' + (js_count++) + ']次编译');
        gulp.run('script');

    });

    console.log('开始监听 css');
    gulp.watch('./src/sass/*.scss', function () {
        console.log('\n本次监听:css第[' + (css_count++) + ']次编译');
        gulp.run('compass');
    });
});

gulp.task('default', function () {
    console.log('gulp script => 合并压缩JavaScript');

    console.log('gulp compass => 合并压缩css');

    console.log('gulp watch => 监控项目css,js');
});